import Generador.*;
import ParaProfiler.*;

/**
 * PruebaSort.java
 * @author Oscar Castañeda, Carnet 11086
 * @version 1.0
 * @since 22/07/2012
 * Descripción: Permite probar los distintos sort, tanto con una lista generada
 * al azar como con una ya ordenada.
 */
public class PruebaSort {
    
    
    public static void main (String[] args){
        int[] cantidades = new int[10];
        cantidades[0] = 10;
        cantidades[1] = 100;
        cantidades[2] = 250;
        cantidades[3] = 500;
        cantidades[4] = 750;
        cantidades[5] = 1000;
        cantidades[6] = 1250;
        cantidades[7] = 1500;
        cantidades[8] = 1750;
        cantidades[9] = 2000;
        
        //Se crea la lista aleatoria y la ordenada.
        GenerarArchivo.generarAleatorio();
        GenerarArchivo.generarOrdenado();
        //Se instancian los sorts.
        QuickSort quickSort = new QuickSort();
        BubbleSort bubble = new BubbleSort();
        //Se generan las listas con los números desordenados y ordenados.
        Integer[] listaParaOrdenar = GenerarArray.generarAleatorio(cantidades[0]);
        Integer[] listaOrdenada = GenerarArray.generarOrdenado(cantidades[9]);
        //Se cambia el índice de la lista para cada prueba.
        
        //Se realiza la operación con la lista para ordenar.
        //quickSort.sort(listaParaOrdenar);
        MergeSort.sort(listaOrdenada);
        //Se realiza la operación con la lista ordenada.
        //quickSort.sort(listaOrdenada);
        //bubble.sort(listaOrdenada);
        //Para utilizar el profiler, se recomienda (hasta ahora) hacer una prueba
        //a la vez (o lista ordenada o lista sin ordenar, pero no ambas en el mismo
        //run para evitar confusiones). Para iniciar el profiler, se debe de colocar
        //este proyecto como principal. Luego, en Profile > Profile Main Project.
        //Luego, en Analyze Performance > Part of Aplication y ahí se selecciona
        //el método que hace el sort. Luego solo se corre y se graba la imagen para 
        //dejar constancia del dato.
    }
    
}
